package com.arpa.wms.domain.dto;

import com.arpa.wms.domain.entity.BasicEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 库存DTO
 * </p>
 *
 * @author LEO
 * @since 2020-08-04
 */
@Data
@ApiModel(value="InventoryDTO对象", description="库存")
public class InventoryDTO extends BasicEntity {


    @ApiModelProperty(value = "主键")
    private String id;

    @ApiModelProperty(value = "数据标识")
    private String code;

    @ApiModelProperty(value = "仓库")
    private String warehouseCode;

    @ApiModelProperty(value = "所属机构Code")
    private String groupCode;

    @ApiModelProperty(value = "仓库名称")
    private String warehouseName;

    @ApiModelProperty(value = "库区")
    private String warehouseSpaceCode;

    @ApiModelProperty(value = "库区名称")
    private String warehouseSpaceName;

    @ApiModelProperty(value = "入驻商")
    private String shipmentCode;

    @ApiModelProperty(value = "登录仓库授权该账号的货主集合")
    private List<String> shipmentCodes;

    @ApiModelProperty(value = "货主名称")
    private String shipmentName;

    @ApiModelProperty(value = "商品code")
    private String goodsCode;

    @ApiModelProperty(value = "商品code的集合")
    private List<String> goodsCodes;

    @ApiModelProperty(value = "商品编码")
    private String goodCode;

    @ApiModelProperty(value = "商品规格")
    private String spec;

    @ApiModelProperty(value = "商品条码")
    private String goodsBarCode;

    @ApiModelProperty(value = "商品名称")
    private String goodsName;

    @ApiModelProperty(value = "单位")
    private String goodsUnit;

    @ApiModelProperty(value = "单位名称")
    private String goodsUnitName;

    @ApiModelProperty(value = "商品保质期（天）")
    private BigDecimal expirationQuantity;

    @ApiModelProperty(value = "数量")
    private BigDecimal quantity;

    @ApiModelProperty(value = "占用数量")
    private BigDecimal useQuantity;

    @ApiModelProperty(value = "移位数量")
    private BigDecimal moveQuantity;

    @ApiModelProperty(value = "调整数量")
    private BigDecimal adjustQuantity;

    @ApiModelProperty(value = "库存数量上限")
    private BigDecimal quantityCeiling;

    @ApiModelProperty(value = "库存数量下限")
    private BigDecimal quantityFloor;

    @ApiModelProperty(value = "库位")
    private String location;

    @ApiModelProperty(value = "库位集合")
    private List<String> locations;

    @ApiModelProperty(value = "原库位")
    private String oldLocation;

    @ApiModelProperty(value = "移入库位")
    private String moveLocation;

    @ApiModelProperty(value = "库位名称")
    private String locationName;

    @ApiModelProperty(value = "原库位名称")
    private String oldLocationName;

    @ApiModelProperty(value = "批次号")
    private String lot;

    @ApiModelProperty(value = "全字段批次号", hidden = true)
    private String fullLot;

    @ApiModelProperty(value = "收货批次号")
    private String receiveLot;

    @ApiModelProperty(value = "版本号")
    private Integer version;

    @ApiModelProperty(value = "生产日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime gmtManufacture;

    @ApiModelProperty(value = "生产日期start")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime gmtManufactureStart;

    @ApiModelProperty(value = "生产日期end")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime gmtManufactureEnd;

    @ApiModelProperty(value = "过期日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime gmtExpire;

    @ApiModelProperty(value = "过期日期start")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime gmtExpireStart;

    @ApiModelProperty(value = "过期日期end")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime gmtExpireEnd;

    @ApiModelProperty(value = "存货日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime gmtStock;

    @ApiModelProperty(value = "存货日期start")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime gmtStockStart;

    @ApiModelProperty(value = "存货日期end")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime gmtStockEnd;

    @ApiModelProperty(value = "供应商")
    private String supplier;

    @ApiModelProperty(value = "序列号")
    private String serialNumber;

    @ApiModelProperty(value = "扩展1")
    private String extendOne;

    @ApiModelProperty(value = "扩展2")
    private String extendTwo;

    @ApiModelProperty(value = "扩展3")
    private BigDecimal extendThree;

    @ApiModelProperty(value = "扩展4")
    private BigDecimal extendFour;

    @ApiModelProperty(value = "扩展5")
    private LocalDateTime extendFive;

    @ApiModelProperty(value = "扩展6")
    private LocalDateTime extendSix;

    @ApiModelProperty(value = "锁定状态")
    private Integer isLock;

    @ApiModelProperty(value = "库存状态（待废弃）")
    private String status;

    @ApiModelProperty(value = "库存状态（待废弃）")
    private String jobStatus;

    @ApiModelProperty(value = "库存状态")
    private String goodsStatus;

    @ApiModelProperty(value = "库存状态")
    private String goodsStatusName;

    @ApiModelProperty(value = "备注")
    private String remarks;

    @ApiModelProperty(value = "数量")
    private BigDecimal canUseQuantity;

    @ApiModelProperty(value = "可用数量上限")
    private BigDecimal canUseQuantityCeiling;

    @ApiModelProperty(value = "可用数量下限")
    private BigDecimal canUseQuantityFloor;

    @ApiModelProperty(value = "动碰次数")
    private Integer actionNum;

    @ApiModelProperty(value = "单位名称")
    private String unitName;

    @ApiModelProperty(value = "保质期上限")
    @TableField("expiration_quantity")
    private BigDecimal expirationQuantityCeiling;

    @ApiModelProperty(value = "保质期下限")
    @TableField("expiration_quantity")
    private BigDecimal expirationQuantityFloor;


    @ApiModelProperty(value = "第几页")
    private Integer pageNum=1;

    @ApiModelProperty(value = "每页条数")
    private Integer pageSize=10;

    @ApiModelProperty(value = "排序字段")
    private String sortField;

    @ApiModelProperty(value = "排序方式")
    private String sortType;

    @ApiModelProperty(value = "是否使用分页；0：分页；1：不使用分页")
    private Integer usePage = 0;


    @ApiModelProperty(value = "容器号")
    private String containerBarCode;

    @ApiModelProperty(value = "默认情况只查正式库存，不查临时库存")
    private Integer tempInventory = 0;

    @ApiModelProperty(value = "临时库存库位，查询可移位数据时，需要查询当前仓库正式库存+退减库存")
    private String tempLocations;

    @ApiModelProperty(value = "任务号")
    private String taskCode;

    @ApiModelProperty(value = "临时库存关联的主单号；如收货单号、发货单号")
    private String tempCode;

    @ApiModelProperty(value = "授权该账号的仓库集合")
    private List<String> warehouseCodes;

    @ApiModelProperty(value = "长度数量下限")
    private BigDecimal lengthFloor;

    @ApiModelProperty(value = "长度数量上限")
    private BigDecimal lengthCeiling;

    @ApiModelProperty(value = "宽度数量下限")
    private BigDecimal widthFloor;

    @ApiModelProperty(value = "宽度数量上限")
    private BigDecimal widthCeiling;

    @ApiModelProperty(value = "高度数量下限")
    private BigDecimal heightFloor;

    @ApiModelProperty(value = "高度数量上限")
    private BigDecimal heightCeiling;

    @ApiModelProperty(value = "体积数量下限")
    private BigDecimal volumeFloor;

    @ApiModelProperty(value = "体积数量上限")
    private BigDecimal volumeCeiling;

    @ApiModelProperty(value = "重量数量下限")
    private BigDecimal weightFloor;

    @ApiModelProperty(value = "重量数量上限")
    private BigDecimal weightCeiling;

    @ApiModelProperty(value = "占用数量下限")
    private BigDecimal useQuantityFloor;

    @ApiModelProperty(value = "占用数量上限")
    private BigDecimal useQuantityCeiling;

}
